package token.gen;

import org.jose4j.jwk.RsaJsonWebKey;
import org.jose4j.jwk.RsaJwkGenerator;
import org.jose4j.lang.JoseException;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * Created by aceyin on 15/7/9.
 * 生成JsonWebKey
 */
public final class JsonWebKey {
    private static String KEY_FILE_NAME = "/json-web-key.bin";
    private static final int KEY_LEN = 2048;

    /**
     * 生成JsonWebKey，并保存到 KEY_FILE_NAME文件中以便被 Controller 中的 JWT 类使用。
     *
     * @return
     * @throws JoseException
     * @throws IOException
     */
    public static RsaJsonWebKey createJsonWebKey() throws JoseException, IOException {
        RsaJsonWebKey key = RsaJwkGenerator.generateJwk(KEY_LEN);
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(KEY_FILE_NAME)));
        oos.writeObject(key);
        oos.flush();
        oos.close();
        return key;
    }
}
